﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SharpShare.Storage.Searching;

namespace SharpShare.Storage {
    public interface IStorageProvider : IStorageContainer {
        /// <summary>
        /// Occurs when anything in this provider changes.
        /// </summary>
        event EventHandler ContentsChanged;

        /// <summary>
        /// Gets the number of bytes available to store in this provider.
        /// </summary>
        ulong AvailableBytes { get; }

        /// <summary>
        /// Gets the total size of this storage provider.
        /// </summary>
        ulong TotalBytes { get; }

        /// <summary>
        /// Gets an instance of IStorageSearchEngine that is capable of searching the contents of this container,
        /// or null if this storage container doesn't support searching.
        /// </summary>
        IStorageSearchEngine SearchEngine { get; }
    }
}
